package pe.gob.mininter.dirandro.vaadin.panel.parte;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;

import pe.gob.mininter.dirandro.model.Delito;
import pe.gob.mininter.dirandro.model.DetCrimen;
import pe.gob.mininter.dirandro.model.DetExpedientePersona;
import pe.gob.mininter.dirandro.model.Expediente;
import pe.gob.mininter.dirandro.model.ExpedienteDelito;
import pe.gob.mininter.dirandro.model.Valor;
import pe.gob.mininter.dirandro.service.DelitoService;
import pe.gob.mininter.dirandro.service.ExpedienteCrimenService;
import pe.gob.mininter.dirandro.service.ExpedienteDelitoService;
import pe.gob.mininter.dirandro.service.ExpedientePersonaService;
import pe.gob.mininter.dirandro.util.Constante;
import pe.gob.mininter.dirandro.vaadin.util.ComboBoxLOVS;
import pe.gob.mininter.dirandro.vaadin.util.Injector;

import com.vaadin.annotations.AutoGenerated;
import com.vaadin.data.Item;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.ui.AbstractSelect.Filtering;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Table;
import com.vaadin.ui.VerticalLayout;

public class PanelRegistroParteDelito extends CustomComponent implements ClickListener {

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
	
	@AutoGenerated
	private VerticalLayout mainLayout;
	@AutoGenerated
	private VerticalLayout verticalLayout_2;
	@AutoGenerated
	private Table tblInvolucrado;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_1;
	@AutoGenerated
	private Button btnAsociar;
	@AutoGenerated
	private ComboBoxLOVS cmbCrimenPrioridad;
	@AutoGenerated
	private ComboBox cmbIntervenido;
	@AutoGenerated
	private VerticalLayout verticalLayout_10;
	@AutoGenerated
	private Table tblDelitoExp;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_35;
	@AutoGenerated
	private Button btnRegistrar;
	@AutoGenerated
	private ComboBoxLOVS cmbDelitoPrioridad;
	@AutoGenerated
	private ComboBox cmbModalidad;
	@AutoGenerated
	private ComboBox cmbSubDelito;
	@AutoGenerated
	private ComboBox cmbDelito;
	private static final long serialVersionUID = -4639683924066371051L;
	private static final String LIMPIAR_DELITO = "delitos";
	private static final String LIMPIAR_CRIMEN = "crimenes";
	
	private DelitoService delitoService;
	private ExpedienteDelitoService expDelitoService;
	private ExpedientePersonaService expPersonaService;
	private ExpedienteCrimenService expCrimenService;
	
	private Expediente expediente;
	private ExpedienteDelito expDelito;
	private Long idExpDelito;
	private boolean flagNuevoDelito;
	private List<Delito> lstModalidades;
	private List<Delito> lstSubDelitos;
	private List<Delito> lstDelitosPadre;
	private boolean inicializado=false;
	
	public PanelRegistroParteDelito() {
		buildMainLayout();
		delitoService = Injector.obtenerServicio(DelitoService.class);
		expDelitoService = Injector.obtenerServicio(ExpedienteDelitoService.class);
		expPersonaService = Injector.obtenerServicio(ExpedientePersonaService.class);
		expCrimenService = Injector.obtenerServicio(ExpedienteCrimenService.class);
		setCompositionRoot(mainLayout);
		postConstruct();
	}
	
	public void setExpediente(Expediente expediente) {
		this.expediente = expediente;
		this.expDelito = new ExpedienteDelito();
		this.expDelito.setExpediente(expediente);
		postConstruct();
	}

	public void postConstruct() {
		if(expediente!=null && !expediente.esNuevo() && !inicializado){
			cmbDelitoPrioridad.setCodigoLista(Constante.LISTA.CODIGO.PRIORIDAD_DELITO);
			cmbDelitoPrioridad.attach();
			cmbCrimenPrioridad.setCodigoLista(Constante.LISTA.CODIGO.PRIORIDAD_DELITO);
			cmbCrimenPrioridad.attach();
			cmbDelitoPrioridad.setInputPrompt("Prioridad");
			cmbDelitoPrioridad.setRequired(true);
			cmbCrimenPrioridad.setInputPrompt("Prioridad");
			cmbCrimenPrioridad.setRequired(true);
			cmbIntervenido.setInputPrompt("Intervenido");
			cmbDelito.setInputPrompt("Delitos");
			cmbSubDelito.setInputPrompt("Sub Delitos");
			cmbModalidad.setInputPrompt("Modalidades");
			cmbSubDelito.setEnabled(false);
			cmbModalidad.setEnabled(false);
			
			tblDelitoExp.setSelectable(true);
			tblDelitoExp.setImmediate(true);
			tblDelitoExp.setNullSelectionAllowed(true);
			tblDelitoExp.setNullSelectionItemId(null);
			
			btnRegistrar.addListener((ClickListener) this);
			btnAsociar.addListener((ClickListener) this);
			inicializarExpDelitos();
			inicializarCrimenes();
			cargarDelitosPadres();
			cargarInvolucrados();
			
			tblDelitoExp.addListener(new ValueChangeListener() {
				
				private static final long serialVersionUID = 5913113937322827537L;
	
				@Override
				public void valueChange(ValueChangeEvent event) {
					boolean esModoNuevo = tblDelitoExp.getValue() == null;
					habilitarEdicion(LIMPIAR_DELITO,!esModoNuevo);
					limpiar(LIMPIAR_DELITO);
					if (esModoNuevo) {
						tblInvolucrado.removeAllItems();
					}else {
						Item item = tblDelitoExp.getItem(tblDelitoExp.getValue());
						idExpDelito = (Long) item.getItemProperty("id").getValue();
						expDelito = new ExpedienteDelito();
						expDelito.setId(idExpDelito);
						
						DetCrimen expCrimen = new DetCrimen();
						expCrimen.setExpedienteDelito(expDelito);
						List<DetCrimen> lstCrimenes = expCrimenService.buscar(expCrimen);
						cargarInvolucrados(lstCrimenes);
						cmbDelitoPrioridad.select((Valor) item.getItemProperty("prioridad").getValue());
					
						Delito modalidadDelito = delitoService.obtener((Long) item.getItemProperty("subdelito.id").getValue());
						Delito delitoPadre = delitoService.buscarPadre(modalidadDelito);
						
						for (Delito delito : lstDelitosPadre) {
							if(delito.getId().equals(delitoPadre.getId())){
								cmbDelito.select(delito);
								break;
							}
						}
						
						for (Delito subDelito : lstSubDelitos) {
							if(subDelito.getId().equals((Long) item.getItemProperty("subdelito.id").getValue())){
								cmbSubDelito.select(subDelito);
								break;
							}
						}
						
						for (Delito modalidad : lstModalidades) {
							if(modalidad.getId().equals((Long)item.getItemProperty("modalidad.id").getValue())){
								cmbModalidad.select(modalidad);
								break;
							}
						}
					}
				}
			});
			inicializado=true;
		}
	}
	
	//** Combos Dinamicos **//
	private void cargarDelitosPadres(){
		lstDelitosPadre = delitoService.buscarPadres();
		cmbDelito.setContainerDataSource(new BeanItemContainer<Delito>(Delito.class,  lstDelitosPadre));
		cmbDelito.setItemCaptionPropertyId("nombre");
		cmbDelito.setFilteringMode(Filtering.FILTERINGMODE_CONTAINS);
		cmbDelito.setImmediate(true);		
		cmbDelito.addListener(new ValueChangeListener() {
		
			private static final long serialVersionUID = 7890335965659986215L;

			@Override
			public void valueChange(ValueChangeEvent event) {
				cargarSubDelitoChange(event);
			}
		});
	}
	
	private void cargarSubDelitoChange(ValueChangeEvent event){
		lstSubDelitos = delitoService.buscarHijos((Delito) cmbDelito.getValue()) ;
		cargarSubDelitosPadres(lstSubDelitos);
		
		if(lstSubDelitos != null  && lstSubDelitos.size() >= 1){
			if (lstSubDelitos.size() == 1) {
				cmbSubDelito.select(lstSubDelitos.get(0));
			}
			cmbSubDelito.setEnabled(true);
		}else {
			cmbSubDelito.setEnabled(false);
			cmbModalidad.setEnabled(false);
			cmbModalidad.removeAllItems();
		}
	}
	
	private void cargarSubDelitosPadres(List<Delito> lstDelitos){
		cmbSubDelito.setImmediate(true);		
		cmbSubDelito.setContainerDataSource(new BeanItemContainer<Delito>(Delito.class, lstDelitos));
		cmbSubDelito.setItemCaptionPropertyId("nombre");
		cmbSubDelito.setFilteringMode(Filtering.FILTERINGMODE_CONTAINS);
		cmbSubDelito.addListener(new ValueChangeListener() {
			
			private static final long serialVersionUID = 8421718776399746575L;

			@Override
			public void valueChange(ValueChangeEvent event) {				
				cargarModalidadChange(event);
			}
		});
	}
	
	private void cargarModalidadChange(ValueChangeEvent event){
		lstModalidades = delitoService.buscarHijos((Delito) cmbSubDelito.getValue()) ;
		cmbModalidad.setImmediate(true);
		cmbModalidad.setContainerDataSource(new BeanItemContainer<Delito>(Delito.class, lstModalidades));
		cmbModalidad.setItemCaptionPropertyId("nombre");
		cmbModalidad.setFilteringMode(Filtering.FILTERINGMODE_CONTAINS);
		
		if(lstModalidades != null  && lstModalidades.size() >= 1){
			if (lstModalidades.size() == 1) {
				cmbModalidad.select(lstModalidades.get(0));
			}
			cmbModalidad.setEnabled(true);
		}else {
			cmbModalidad.setEnabled(false);
		}
	}
	
	private void cargarInvolucrados(){
		DetExpedientePersona dp = new DetExpedientePersona();
		dp.setExpediente(expediente);
		List<DetExpedientePersona> lstDelitosPadre = expPersonaService.buscar(dp);
		cmbIntervenido.setContainerDataSource(new BeanItemContainer<DetExpedientePersona>(DetExpedientePersona.class,  lstDelitosPadre));
		cmbIntervenido.setItemCaptionPropertyId("nombreCompleto");
		cmbIntervenido.setFilteringMode(Filtering.FILTERINGMODE_CONTAINS);
		cmbIntervenido.setImmediate(true);
	}
	
	//** Carga de Tablas **//
	private void inicializarExpDelitos(){
		habilitarEdicion(LIMPIAR_DELITO,false);
		limpiar(LIMPIAR_DELITO);
		List<ExpedienteDelito> lstExpDelitos = expDelitoService.buscar( this.expDelito );
		cargarExpDelitos(lstExpDelitos);
	}
	
	private void inicializarCrimenes(){
		tblInvolucrado.setSelectable(true);
		tblInvolucrado.setImmediate(true);
		tblInvolucrado.setNullSelectionAllowed(true);
		tblInvolucrado.setNullSelectionItemId(null);
		cargarInvolucrados(new ArrayList<DetCrimen>());
	}
	
	private void cargarExpDelitos(List<ExpedienteDelito> lstExpDelitos){
		IndexedContainer container = new IndexedContainer();
		container.addContainerProperty("id", Long.class,  null);
		container.addContainerProperty("modalidad.id", Long.class, null);
		container.addContainerProperty("subdelito.id", Long.class, null);
		container.addContainerProperty("modalidad.nombre", String.class, null);
		container.addContainerProperty("modalidad", Delito.class, null);
		container.addContainerProperty("subtipo.nombre", String.class, null);
		container.addContainerProperty("prioridad.nombre", String.class, null);
		container.addContainerProperty("prioridad.id", Long.class, null);
		container.addContainerProperty("prioridad", Valor.class, null);
		
		tblDelitoExp.setContainerDataSource(container);
		tblDelitoExp.setVisibleColumns(new Object[]{"id","subtipo.nombre","modalidad.nombre","prioridad.nombre"});
		
		tblDelitoExp.setColumnHeader("id", "Id");
		tblDelitoExp.setColumnHeader("subtipo.nombre", "Modalidad");
		tblDelitoExp.setColumnHeader("modalidad.nombre", "Modalidad");
		tblDelitoExp.setColumnHeader("prioridad.nombre", "Prioridad");
		
		int con=1;
		for (ExpedienteDelito expDelito : lstExpDelitos){
			Item item = container.addItem(con++);
			item.getItemProperty("id").setValue(expDelito.getId());
			item.getItemProperty("subtipo.nombre").setValue(expDelito.getDelito().getPadre() != null ? expDelito.getDelito().getPadre().getNombre() : StringUtils.EMPTY);
			item.getItemProperty("modalidad.id").setValue(expDelito.getDelito() != null ? expDelito.getDelito().getId() : null);
			item.getItemProperty("subdelito.id").setValue(expDelito.getDelito().getPadre() != null ? expDelito.getDelito().getPadre().getId() : null);
			item.getItemProperty("modalidad.nombre").setValue(expDelito.getDelito() != null ? expDelito.getDelito().getNombre() : StringUtils.EMPTY);
			item.getItemProperty("modalidad").setValue(expDelito.getDelito());
			item.getItemProperty("prioridad.nombre").setValue(expDelito.getPrioridad() != null ? expDelito.getPrioridad().getNombre() : StringUtils.EMPTY);
			item.getItemProperty("prioridad.id").setValue(expDelito.getPrioridad() != null ? expDelito.getPrioridad().getId() : null);
			item.getItemProperty("prioridad").setValue(expDelito.getPrioridad());
		}
	}	
	
	private void cargarInvolucrados(List<DetCrimen> lstCrimenes){
		IndexedContainer containerCrimenes = new IndexedContainer();
		containerCrimenes.addContainerProperty("id", Long.class,  null);
		containerCrimenes.addContainerProperty("expPersona.nombre", String.class,  null);
		containerCrimenes.addContainerProperty("expDelito.nombre", String.class,  null);
		containerCrimenes.addContainerProperty("prioridad", String.class,  null);
		
		tblInvolucrado.setContainerDataSource(containerCrimenes);
		tblInvolucrado.setVisibleColumns(new Object[]{"id", "expPersona.nombre", "expDelito.nombre", "prioridad"});		
				
		tblInvolucrado.setColumnHeader("id", "Id");
		tblInvolucrado.setColumnHeader("expPersona.nombre", "Persona Relacionada");
		tblInvolucrado.setColumnHeader("expDelito.nombre", "Delito Cometido");
		tblInvolucrado.setColumnHeader("expDelito.nombre", "Persona Relacionada");
		tblInvolucrado.setColumnHeader("prioridad", "Prioridad");
		
		Integer conta = 1;
		for (DetCrimen crimen : lstCrimenes){
			Item item = containerCrimenes.addItem(conta++);
			item.getItemProperty("id").setValue(crimen.getId());
			item.getItemProperty("expPersona.nombre").setValue(crimen.getExpedientePersona().getNombreCompleto());
			item.getItemProperty("expDelito.nombre").setValue(crimen.getExpedienteDelito().getDelito().getNombre());
			item.getItemProperty("prioridad").setValue(crimen.getPrioridad().getNombre());
		}
	}
	
	//** Listeners **//
	@Override
	public void buttonClick(ClickEvent event) {
		
		if (event.getButton().equals(btnRegistrar)) {
			ExpedienteDelito expDelito = new ExpedienteDelito();
			expDelito.setDelito((Delito) cmbModalidad.getValue());
			expDelito.setExpediente(expediente);
			expDelito.setPrioridad(cmbDelitoPrioridad.getValor());
			
			if(flagNuevoDelito)			
				expDelitoService.crear(expDelito);
			else{
				expDelito.setId(idExpDelito);
				expDelitoService.actualizar(expDelito);
			}
			refrescar(LIMPIAR_DELITO);
		}
		
		if (event.getButton().equals(btnAsociar)) {
			DetCrimen expCrimen = new DetCrimen();
			expCrimen.setPrioridad(cmbCrimenPrioridad.getValor());
			expCrimen.setExpedienteDelito(expDelito);
			expCrimen.setExpedientePersona((DetExpedientePersona) cmbIntervenido.getValue());
			expCrimenService.crear(expCrimen);
			refrescar(LIMPIAR_CRIMEN);
		}
	}
	
	//** Utilitarios **//
	private void limpiar(String tipo){
		if (tipo.equals(LIMPIAR_DELITO)) {
			expDelito = new ExpedienteDelito();
			expDelito.setExpediente(expediente);
			cmbDelito.select(null);
			cmbSubDelito.removeAllItems();
			cmbSubDelito.select(null);
			cmbSubDelito.setEnabled(false);
			cmbModalidad.removeAllItems();
			cmbModalidad.select(null);
			cmbModalidad.setEnabled(false);
			cmbDelitoPrioridad.select(null);
		}else if (tipo.equals(LIMPIAR_CRIMEN)) {
			cmbIntervenido.select(null);
			cmbCrimenPrioridad.select(null);
		}
	}
	
	private void refrescar(String nombre){
		limpiar(nombre);
		if(nombre.equals(LIMPIAR_DELITO)){
			inicializarExpDelitos();
		}else if(nombre.equals(LIMPIAR_CRIMEN)){
			DetCrimen expCrimen = new DetCrimen();
			expCrimen.setExpedienteDelito(expDelito);
			List<DetCrimen> lstCrimenes = expCrimenService.buscar(expCrimen);
			cargarInvolucrados(lstCrimenes);
		}
	}
	
	private void habilitarEdicion(String nombre, boolean flag){
		if (nombre.equals(LIMPIAR_DELITO)) {
			flagNuevoDelito = !flag;
			if (flag) {
				btnRegistrar.setCaption("Actualizar");
				btnRegistrar.setEnabled(true);
				btnAsociar.setEnabled(true);
			} else {
				btnRegistrar.setCaption("Registrar");
				btnAsociar.setEnabled(false);
			}
		}
	}

	@AutoGenerated
	private VerticalLayout buildMainLayout() {
		// common part: create layout
		mainLayout = new VerticalLayout();
		mainLayout.setImmediate(false);
		mainLayout.setWidth("100%");
		mainLayout.setHeight("-1px");
		mainLayout.setMargin(false);
		
		// top-level component properties
		setWidth("100.0%");
		setHeight("-1px");
		
		// verticalLayout_10
		verticalLayout_10 = buildVerticalLayout_10();
		mainLayout.addComponent(verticalLayout_10);
		
		// verticalLayout_2
		verticalLayout_2 = buildVerticalLayout_2();
		mainLayout.addComponent(verticalLayout_2);
		
		return mainLayout;
	}

	@AutoGenerated
	private VerticalLayout buildVerticalLayout_10() {
		// common part: create layout
		verticalLayout_10 = new VerticalLayout();
		verticalLayout_10.setImmediate(false);
		verticalLayout_10.setWidth("-1px");
		verticalLayout_10.setHeight("-1px");
		verticalLayout_10.setMargin(true);
		verticalLayout_10.setSpacing(true);
		
		// horizontalLayout_35
		horizontalLayout_35 = buildHorizontalLayout_35();
		verticalLayout_10.addComponent(horizontalLayout_35);
		
		// tblDelitoExp
		tblDelitoExp = new Table();
		tblDelitoExp.setImmediate(false);
		tblDelitoExp.setWidth("870px");
		tblDelitoExp.setHeight("250px");
		verticalLayout_10.addComponent(tblDelitoExp);
		
		return verticalLayout_10;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_35() {
		// common part: create layout
		horizontalLayout_35 = new HorizontalLayout();
		horizontalLayout_35.setImmediate(false);
		horizontalLayout_35.setWidth("-1px");
		horizontalLayout_35.setHeight("-1px");
		horizontalLayout_35.setMargin(false);
		horizontalLayout_35.setSpacing(true);
		
		// cmbDelito
		cmbDelito = new ComboBox();
		cmbDelito.setCaption("Delito");
		cmbDelito.setImmediate(false);
		cmbDelito.setWidth("200px");
		cmbDelito.setHeight("-1px");
		cmbDelito.setRequired(true);
		horizontalLayout_35.addComponent(cmbDelito);
		
		// cmbSubDelito
		cmbSubDelito = new ComboBox();
		cmbSubDelito.setCaption("Sub Delito");
		cmbSubDelito.setImmediate(false);
		cmbSubDelito.setWidth("200px");
		cmbSubDelito.setHeight("-1px");
		cmbSubDelito.setRequired(true);
		horizontalLayout_35.addComponent(cmbSubDelito);
		
		// cmbModalidad
		cmbModalidad = new ComboBox();
		cmbModalidad.setCaption("Modalidad");
		cmbModalidad.setImmediate(false);
		cmbModalidad.setWidth("200px");
		cmbModalidad.setHeight("-1px");
		cmbModalidad.setRequired(true);
		horizontalLayout_35.addComponent(cmbModalidad);
		
		// cmbDelitoPrioridad
		cmbDelitoPrioridad = new ComboBoxLOVS();
		cmbDelitoPrioridad.setCaption("Prioridad");
		cmbDelitoPrioridad.setImmediate(false);
		cmbDelitoPrioridad.setWidth("-1px");
		cmbDelitoPrioridad.setHeight("-1px");
		horizontalLayout_35.addComponent(cmbDelitoPrioridad);
		
		// btnRegistrar
		btnRegistrar = new Button();
		btnRegistrar.setCaption("Registrar");
		btnRegistrar.setImmediate(true);
		btnRegistrar.setWidth("-1px");
		btnRegistrar.setHeight("-1px");
		horizontalLayout_35.addComponent(btnRegistrar);
		horizontalLayout_35.setComponentAlignment(btnRegistrar,
				new Alignment(9));
		
		return horizontalLayout_35;
	}

	@AutoGenerated
	private VerticalLayout buildVerticalLayout_2() {
		// common part: create layout
		verticalLayout_2 = new VerticalLayout();
		verticalLayout_2.setImmediate(false);
		verticalLayout_2.setWidth("-1px");
		verticalLayout_2.setHeight("-1px");
		verticalLayout_2.setMargin(true);
		verticalLayout_2.setSpacing(true);
		
		// horizontalLayout_1
		horizontalLayout_1 = buildHorizontalLayout_1();
		verticalLayout_2.addComponent(horizontalLayout_1);
		
		// tblInvolucrado
		tblInvolucrado = new Table();
		tblInvolucrado.setImmediate(false);
		tblInvolucrado.setWidth("870px");
		tblInvolucrado.setHeight("250px");
		verticalLayout_2.addComponent(tblInvolucrado);
		
		return verticalLayout_2;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_1() {
		// common part: create layout
		horizontalLayout_1 = new HorizontalLayout();
		horizontalLayout_1.setImmediate(false);
		horizontalLayout_1.setWidth("-1px");
		horizontalLayout_1.setHeight("-1px");
		horizontalLayout_1.setMargin(false);
		horizontalLayout_1.setSpacing(true);
		
		// cmbIntervenido
		cmbIntervenido = new ComboBox();
		cmbIntervenido.setCaption("Intervenido");
		cmbIntervenido.setImmediate(false);
		cmbIntervenido.setWidth("-1px");
		cmbIntervenido.setHeight("-1px");
		cmbIntervenido.setRequired(true);
		horizontalLayout_1.addComponent(cmbIntervenido);
		
		// cmbCrimenPrioridad
		cmbCrimenPrioridad = new ComboBoxLOVS();
		cmbCrimenPrioridad.setCaption("Prioridad");
		cmbCrimenPrioridad.setImmediate(false);
		cmbCrimenPrioridad.setWidth("-1px");
		cmbCrimenPrioridad.setHeight("-1px");
		horizontalLayout_1.addComponent(cmbCrimenPrioridad);
		
		// btnAsociar
		btnAsociar = new Button();
		btnAsociar.setCaption("Asociar Delito");
		btnAsociar.setImmediate(true);
		btnAsociar.setWidth("-1px");
		btnAsociar.setHeight("-1px");
		horizontalLayout_1.addComponent(btnAsociar);
		horizontalLayout_1.setComponentAlignment(btnAsociar, new Alignment(9));
		
		return horizontalLayout_1;
	}

}
